<?php


/*
 * MiningBuddy (http://miningbuddy.net)
 * $Header: /usr/home/mining/cvs/mining/functions/database/createTransaction.php,v 1.6 2008/01/02 20:01:32 mining Exp $
 *
 * Copyright (c) 2005-2008 Christian Reiss.
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms,
 * with or without modification, are permitted provided
 * that the following conditions are met:
 *
 * - Redistributions of source code must retain the above copyright notice,
 *   this list of conditions and the following disclaimer.
 * - Redistributions in binary form must reproduce the above copyright
 *   notice, this list of conditions and the following disclaimer in the
 *   documentation and/or other materials provided with the distribution.
 *
 *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
 *  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
 *  TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
 *  OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
 *  OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 *  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

/*
 * This creates a new transaction int the database.
 */

function createTransaction() {

	// We need globals.
	global $DB;
	global $MySelf;
	global $TIMEMARK;

	// Are we allowed to poke in here?
	if (!$MySelf->isAccountant()) {
		makeNotice("Umm, you are not allowed to do this. Really. You are not.", "warning", "You are not supposed to be here");
	}

	// Check the ints.
	numericCheck($_POST[wod], 0, 1);
	numericCheck($_POST[amount], 0);
	numericCheck($_POST[id], 0);

	// Its easier on the eyes.
	$type = $_POST[wod];
	$amount = $_POST[amount];
	$id = $_POST[id];
	$username = idToUsername($id);

	// invert the amount if we have a withdrawal.
	if ($_POST[wod] == 1) {
		$dir = "withdrawed";
		$dir2 = "from";

		$hisMoney = getCredits($id);
		if ($hisMoney < $amount) {
			$ayee = $hisMoney - $amount;
			confirm("WARNING:<br>$username can NOT afford this withdrawal. If you choose to " .
			"authorize this transaction anyway his account will be at " . number_format($ayee, 2) . " ISK.");
		}
		
	} else {
		$amount = $_POST[amount];
		$dir = "deposited";
		$dir2 = "into";
	}

	// We use custom reason, if set.
	if ($_POST[reason2] != "") {
		$reason = sanitize($_POST[reason2]);
	} else {
		$reason = sanitize($_POST[reason1]);
	}

	// Create transaction.
	$transaction = new transaction($id, $type, $amount);
	$transaction->setReason($reason);
	
	// Success?
	if (!$transaction->commit()) {
		// Nope :( 		
		makeNotice("Unable to create transaction. Danger, Will Robinson, DANGER!", "error", "Internal Error", "index.php?action=edituser&id=$id", "[Back]");
	} else {
		// Success !
		makeNotice("You successfully $dir $amount ISK $dir2 " . $username . "'s account.", "notice", "Transaction complete", "index.php?action=edituser&id=$id", "[Ok]");
	}
}
?>